/* 捕获异常中间件,统一异常处理 */
const catchException = (ctx, next) => {
    return next().catch((err) => {
        console.log(err);
        /* 
          message: 'jwt expired' 过期 （关注，处理下）
          message: 'Authentication Error' 没有该字段或者为空 （归为其他）
          message: 'invalid signature' 无效签名(可能秘钥修改了) （归为其他）
          message: 'Bad Authorization header format. Format is "Authorization: Bearer <token>"' 格式错误，没传 Bearer （归为其他）
          message: 'jwt malformed'  jwt格式错误，（归为其他）
          other...
        */
        ctx.type = 'json';
        if (401 == err.status) {
            ctx.status = 401;
            /* koa-jwt中的登录异常处理 */
            if (err.originalError.message === 'jwt expired') {
                ctx.body = {
                    code: '1002',
                    msg: '登录时间过长，请重新登录'
                };
            } else {
                ctx.body = {
                    code: '1003',
                    msg: '您还没有登录，请登录'
                };
            }
        } else {
            ctx.body = {
                err
            };
        }
    });
}
module.exports = {
    catchException
}